from gameplay.Board import *
from gameplay.Move import *

class AI:
    """ 
    An abstract class designed to be implemented by any AI system
    used in the game
    """
    
    def chooseMove(self):
        """
        The chooseMove method returns the next Move selected by this AI.
        """
        self.abstract() # require override
       
    def abstract(self):
        import inspect
        caller = inspect.getouterframes(inspect.currentframe())[1][3]
        raise NotImplementedError(caller + ' must be implemented in subclass') 